package com.alks.function.service.finance.mtlcosts;

import com.alks.entity.data.entity.PcCostDetail;
import com.alks.entity.data.entity.PcCostTemp;
import com.alks.entity.data.response.ResponseInfo;
import com.alks.function.data.request.finance.ryfinance.CostDTTRequest;
import com.alks.function.data.request.finance.ryfinance.CostDetUpRequest;
import com.alks.function.data.request.finance.ryfinance.CostDetailQueryRequest;
import com.alks.function.data.request.finance.ryfinance.CostTempToDetailRequest;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author MS
 * @since 2024/6/7上午10:05
 */
public interface IMcBillFessService {

    /**
     * 费用查询明细-分页可条件查询
     *
     * @param request
     * @return
     */
    Map<String, Object> costDetailQuery(CostDetailQueryRequest request);

    /**
     * 费用明细增加-新增，删除
     * @param request
     * @return
     */
    ResponseInfo costTempToDetail(CostTempToDetailRequest request);

    /**
     * 费用明细修改/扣款-新增，删除
     * @param request
     * @param type
     * @return
     */
    ResponseInfo costDetailToTemp(List<CostDTTRequest> request, Integer type);

    /**
     * 费用明细更新(包括结算)-更新
     * @param request
     * @param financeType
     * @param financeYymm
     * @return
     */
    ResponseInfo costDetailUpdate(List<CostDetUpRequest> request, Integer financeType, String financeYymm);

    /**
     * 费用明细删除-删除，更新
     * @param idList id集合
     * @return 删除结果
     */
    ResponseInfo costDetailDelete(List<Integer> idList);

    /**
     * 费用明细写入
     * @param request 待写入数据
     */
    void costTempAdd(PcCostTemp request);

    /**
     *  费用明细写入
     */
    void costInsert(List<PcCostDetail> detailList);

    /**
     *
     * @param item
     * @return
     */
    ResponseInfo costTempDelete(Integer item);
}
